// ----------------------------------
// RSDK Project: Sonic 1/Sonic 2
// Script Description: Config Screen Object
// Script Author: Christian Whitehead/Simon Thomley
// Unpacked by Rubberduckycooly's script unpacker
// ----------------------------------

// Aliases
private alias 0 : INACTIVE
private alias 1 : SCROLL_IN

private alias 2 : OPTIONS_IDLE

private alias 8 : SCROLL_OUT
private alias 9 : EXITING

private alias object.value0 : boxthing


// Static Values

// Tables

event ObjectMain
	switch object.state
	case 0
		object.inkEffect = INK_ALPHA
		object.alpha = 0
		object.drawOrder = 6
		object.state++
		PlaySfx(SfxName[Window Open], 0)
		break
	case 1
		temp0 = 198
		temp0 -= boxthing
		temp0 >>= 3
		boxthing += temp0
		temp0 = 216
		temp0 -= object.value5
		temp0 >>= 3
		object.value5 += temp0
		if boxthing >= 188
			boxthing = 188
			object.value5 = 208
			object.state++
		end if
		break
	case 2
		if object.alpha < 256
			object.value3 = 1
			object.alpha += 16
		else
			object.state++
		end if
		break
	case 3
			if inputPress.left == 1
				if object.value3 == 0
					object.value3 = 1
				else
					object.value3 = 0
				end if
				PlaySfx(SfxName[Menu Move], 0)
			end if
			if inputPress.right == 1
				if object.value3 == 0
					object.value3 = 1
				else
					object.value3 = 0
				end if
				PlaySfx(SfxName[Menu Move], 0)
			end if
			switch object.value3
			case 0
				if inputPress.buttonA == 1
					object.state = 6
					PlaySfx(SfxName[Window Confirm], 0)
				end if
				if inputPress.start == 1
					object.state = 6
					PlaySfx(SfxName[Window Confirm], 0)
				end if
				break
			case 1
				if inputPress.buttonA == 1
					object.state = 4
					PlaySfx(SfxName[Window Close], 0)
				end if
				if inputPress.start == 1
					object.state = 4
					PlaySfx(SfxName[Window Close], 0)
				end if
				break
			end switch
			if inputPress.buttonB == 1
				object.state = 4
				PlaySfx(SfxName[Window Close], 0)
			end if
		break
	case 4
		if object.alpha > 0
			object.alpha -= 16
		else
			object.state++
		end if
		break
	case 5
		temp0 = 0
		temp0 -= boxthing
		temp0 >>= 3
		boxthing += temp0
		temp0 = 0
		temp0 -= object.value5
		temp0 >>= 3
		object.value5 += temp0
		if boxthing < 4
			boxthing = 0
			object.value5 = 0
			object.state = 8
			foreach (TypeName[Options Menu], arrayPos0, ALL_ENTITIES)
				object[arrayPos0].state = OPTIONS_IDLE
			next
		end if
		break
	case 6
		if object.alpha > 0
			object.alpha -= 16
		else
			object.state++
		end if
		break
	case 7
		temp0 = 0
		temp0 -= boxthing
		temp0 >>= 3
		boxthing += temp0
		temp0 = 0
		temp0 -= object.value5
		temp0 >>= 3
		object.value5 += temp0
		if boxthing < 4
			arrayPos0 = 500
			while arrayPos0 <= 519
	    			saveRAM[arrayPos0] = 0
	    			arrayPos0++
			loop
			PlaySfx(SfxName[Release], 0)
			WriteSaveRAM()
			boxthing = 0
			object.value5 = 0
			object.state = 8
			foreach (TypeName[Options Menu], arrayPos0, ALL_ENTITIES)
				object[arrayPos0].state = OPTIONS_IDLE
			next
		end if
		break
	case 8
		break
	end switch
end event


event ObjectDraw
	temp0 = boxthing
	temp0 >>= 1
	FlipSign(temp0)
	temp0 += screen.xcenter
	temp1 = object.value5
	temp1 >>= 1
	FlipSign(temp1)
	temp1 += screen.ycenter
	DrawRect(temp0, temp1, boxthing, object.value5, 76, 0, 0, 255)
	temp0 += 2
	temp1 += 2
	temp4 = boxthing
	temp4 -= 4
	temp3 = object.value5
	temp3 -= 4
	DrawRect(temp0, temp1, temp4, temp3, 40, 0, 0, 255)
	DrawSpriteScreenFX(0, FX_INK, screen.xcenter, 69)
	DrawSpriteScreenFX(1, FX_INK, screen.xcenter, 149)
	DrawSpriteScreenFX(2, FX_INK, screen.xcenter, 149)
	if object.value3 == 1
		DrawSpriteScreenFX(4, FX_INK, screen.xcenter, 149)
	else
		DrawSpriteScreenFX(3, FX_INK, screen.xcenter, 149)
	end if
end event


event ObjectStartup
	LoadSpriteSheet("Title/Title2.gif")
	SpriteFrame(-65, 0, 132, 65, 1, 750)
	SpriteFrame(-65, 0, 31, 11, 40, 816)
	SpriteFrame(40, 0, 31, 11, 74, 816)
	SpriteFrame(-65, 0, 31, 11, 134, 816)
	SpriteFrame(40, 0, 20, 11, 168, 816)
end event

event RSDKDraw
	DrawSprite(0)
end event

event RSDKLoad
	LoadSpriteSheet("Global/Display.gif")
	SpriteFrame(-16, -16, 32, 32, 1, 143)
end event
